extends Node

# 此脚本用于生成武器的SpriteFrames资源
# 可以在编辑器中运行，生成所需的资源文件

# 武器定义
var weapons = {
	"裁星者": {
		"texture_path": "res://assets/ColorfulSword_idle.png",
		"frames": 1,  # 帧数
		"animation_speed": 5.0,  # 动画速度
		"output_path": "res://assets/weapons/caixingzhe_sprite_frames.tres"
	}
	# 可以添加更多武器
}

func _ready():
	# 在编辑器中运行时生成资源
	if Engine.is_editor_hint():
		generate_all_sprite_frames()

# 生成所有武器的SpriteFrames资源
func generate_all_sprite_frames():
	for weapon_name in weapons:
		var weapon_data = weapons[weapon_name]
		generate_sprite_frames(
			weapon_name,
			weapon_data.texture_path,
			weapon_data.frames,
			weapon_data.animation_speed,
			weapon_data.output_path
		)

# 生成单个武器的SpriteFrames资源
func generate_sprite_frames(weapon_name: String, texture_path: String, frames: int, animation_speed: float, output_path: String):
	print("生成武器精灵帧: ", weapon_name)
	
	# 检查纹理是否存在
	if not ResourceLoader.exists(texture_path):
		print("错误: 纹理不存在: ", texture_path)
		return
	
	# 加载纹理
	var texture = load(texture_path)
	if not texture:
		print("错误: 无法加载纹理: ", texture_path)
		return
	
	# 创建SpriteFrames资源
	var sprite_frames = SpriteFrames.new()
	
	# 添加默认动画
	sprite_frames.add_animation("default")
	sprite_frames.set_animation_speed("default", animation_speed)
	sprite_frames.set_animation_loop("default", true)
	
	# 如果只有一帧，直接添加
	if frames == 1:
		sprite_frames.add_frame("default", texture)
	else:
		# 多帧处理逻辑（如果需要）
		# 这里需要根据实际纹理布局进行调整
		pass
	
	# 保存资源
	var dir = DirAccess.open("res://")
	if not dir.dir_exists("res://assets/weapons"):
		dir.make_dir("res://assets/weapons")
	
	var err = ResourceSaver.save(sprite_frames, output_path)
	if err == OK:
		print("成功保存武器精灵帧: ", output_path)
	else:
		print("错误: 无法保存武器精灵帧: ", output_path, " 错误码: ", err)

# 编辑器工具函数
func _get_configuration_warning():
	return "此脚本用于生成武器精灵帧资源，请在编辑器中运行" 